﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Globalization;

using Modelo_ETdA.Negocio.AmbienteComercial;

namespace Modelo_ETdA.Interface
{
    public partial class RegistarAmbComercial2 : Form
    {
        RegistarAmbComercial anterior;
        MenuAnalista menuAnalist;
        AmbienteComercialCabecalho cabecalho;
        CategoriaAmbComercial categoria;
        List<int> lanalistas;
        List<int> codigoDiv;
        List<String> nomeDiv;
        int codigo = 1;
        GestorAmbienteComercial gestorAmb;
        public RegistarAmbComercial2(RegistarAmbComercial ant, Form menuAna, AmbienteComercialCabecalho cabecalho, CategoriaAmbComercial categoria, List<int> analistas, GestorAmbienteComercial gestor)
        {
            InitializeComponent();
            anterior = ant;
            menuAnalist = (MenuAnalista)menuAna;
            this.cabecalho = cabecalho;
            this.categoria = categoria;
            lanalistas = analistas;
            codigoDiv = new List<int>();
            nomeDiv = new List<String>();
            gestorAmb = gestor;
        }

        private void voltar_Click(object sender, EventArgs e)
        {
            anterior.Visible = true;
            this.Visible = false;
        }

        private void registar_Click(object sender, EventArgs e)
        {
            try{
            if (listaZonas.Items.Count == 0)
            {
                MessageBox.Show("Não inseriu nenhuma zona ou tarefa!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            lanalistas.Add(anterior.menuAnalist.Analist.cod);
            int i = 0;
            List<Divisao> divisoes = new List<Divisao>();

            while (i < listaZonas.Items.Count)
            {
                divisoes.Add(new Divisao(codigoDiv[i], nomeDiv[i]));
                ++i;
            }

            AmbienteComercial amb = new AmbienteComercial(lanalistas, divisoes, zona.Checked, categoria, cabecalho);
            gestorAmb.registaAmbComercial(amb);
            MessageBox.Show("Ambiente Comercial registado com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.Visible = false;
            menuAnalist.Visible = true;
            }
            catch (Exception exp)
            {
                MessageBox.Show("Erro ao registar ambiente comercial!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void zona_CheckedChanged(object sender, EventArgs e)
        {
            if (zona.Checked)
                actualizaLista("Z");
            else actualizaLista("T");

        }

        private void actualizaLista(String tipo)
        {
            int i = 0;
            listaZonas.Items.Clear();

            while (i < nomeDiv.Count)
            {
                listaZonas.Items.Add(tipo + codigoDiv[i] + " - " + nomeDiv[i]);
                i++;

            }

        }

        private void adicionar_Click(object sender, EventArgs e)
        {
            String cod;

            foreach (String s in listaZonas.Items)
            {

                int local = s.IndexOf("-");
                int tamanho = s.Length;
                String nome = s.Substring(local + 2);
                if (nome.ToLower().CompareTo(nomeZona.Text.ToLower()) == 0)
                {
                    MessageBox.Show("Zona ou tarefa já se encontra inserida!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    nomeZona.Text = "";
                    return;
                }

            }


            if (nomeZona.TextLength > 0)
            {
                nomeDiv.Add(nomeZona.Text);
                codigoDiv.Add(codigo);
                if (zona.Checked)
                    cod = "Z" + nomeDiv.Count;
                else cod = "T" + nomeDiv.Count;
                listaZonas.Items.Add(cod + " - " + nomeZona.Text);
                nomeZona.Text = "";
                codigo++;
            }
            else
            {
                MessageBox.Show("Não definiu o nome da zona ou tarefa!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private void remover_Click(object sender, EventArgs e)
        {
            if (listaZonas.SelectedItem == null)
                return;
            int i = 1;
            String cod;
            if (zona.Checked)
                cod = "Z";
            else cod = "T";
            nomeDiv.RemoveAt(listaZonas.SelectedIndex);
            codigoDiv.Clear();
            listaZonas.Items.Clear();

            foreach (String nomeZona in nomeDiv)
            {
                codigoDiv.Add(i);
                listaZonas.Items.Add(cod + "" + i + " - " + nomeZona);
                i++;
            }

        }

        private void RegistarAmbComercial2_FormClosed(object sender, FormClosedEventArgs e)
        {
            menuAnalist.sair();
        }


    }
}
